根據 FORTH:慶的世界 2008年11月29日的貼文,有整理一篇 F83 標準指令。該網站的作者,曾慶潭先生曾任中華民國符式語言學會的理事長,擅長 Forth 語言數值分析程式設計,他的 Blogger 網站有相當豐富的 Forth 程式設計經驗分享,非常值得一看。
https://forthfortnight.blogspot.com/2008/11/forth-83_252.html
我們在此將文件重新編輯,改成表格形式,方便讀者後續章節可以拿來參考使用。
| 類別 | 指令 | 堆疊註解 / 說明 | 
|---|---|---|
| 堆疊操作指令 | DUP | ( n - n , n ) 複製堆疊頂端之值。 | 
| 堆疊操作指令 | DROP | ( n - ) 丟棄堆疊頂端之值。 | 
| 堆疊操作指令 | SWAP | ( n1 , n2 - n2 , n1 ) 互換堆疊頂上兩值。 | 
| 堆疊操作指令 | OVER | ( n1 , n2 - n1 , n2 , n1 ) 複製 n1 到頂端。 | 
| 堆疊操作指令 | ROT | ( n1 , n2 , n3 - n2 , n3 , n1 ) 將 n1 旋轉到頂端。 | 
| 堆疊操作指令 | PICK | ( . . . +i - . . . n ) 複製 n(i) 到頂端。 | 
| 堆疊操作指令 | ROLL | ( . . . +i - . . . ) 將 n(i) 旋轉到頂端。 | 
| 堆疊操作指令 | ?DUP | ( n - 0 | 
| 堆疊操作指令 | DEPTH | ( - +n ) 取得堆疊深度。 | 
| 堆疊操作指令 | >R | ( n1 - ) 將 n1 推入回返堆疊。 | 
| 堆疊操作指令 | R@ | ( - n1 ) 從回返堆疊複製值。 | 
| 堆疊操作指令 | R> | ( - n1 ) 從回返堆疊取回值。 | 
| 記憶體操作指令 | @ | ( addr - n ) 取得記憶體中 16 位元內容(飛取)。 | 
| 記憶體操作指令 | C@ | ( addr - c ) 取得記憶體中 8 位元內容。 | 
| 記憶體操作指令 | ! | ( n , addr - ) 將 n 存入記憶體。 | 
| 記憶體操作指令 | C! | ( c , addr - ) 將 c 存入記憶體。 | 
| 記憶體操作指令 | +! | ( n , addr - ) 將 n 加到記憶體內容。 | 
| 記憶體操作指令 | CMOVE | ( addr1 , addr2 , u - ) 由 addr1 搬移 u 個字元到 addr2,低效先搬。 | 
| 記憶體操作指令 | CMOVE> | ( addr1 , addr2 , u - ) 高效位址先搬。 | 
| 記憶體操作指令 | FILL | ( addr , u , c - ) 從 addr 開始填入 u 個字元為 c。 | 
| 算術運算操作指令 | + | ( n1 , n2 - sum ) 相加。 | 
| 算術運算操作指令 | - | ( n1 , n2 - diff ) 相減。 | 
| 算術運算操作指令 | * | ( n1 , n2 - product ) 相乘。 | 
| 算術運算操作指令 | / | ( n1 , n2 - quotient ) 相除 (餘數捨去)。 | 
| 算術運算操作指令 | MOD | ( n1 , n2 - remainder ) 求餘數。 | 
| 算術運算操作指令 | /MOD | ( n1 , n2 - rem , quot ) 同時求商與餘數。 | 
| 算術運算操作指令 | 1+ | ( n1 - n2 ), n2 = n1 + 1。 | 
| 算術運算操作指令 | 1- | ( n1 - n2 ), n2 = n1 − 1。 | 
| 算術運算操作指令 | 2+ | ( n1 - n2 ), n2 = n1 + 2。 | 
| 算術運算操作指令 | 2- | ( n1 - n2 ), n2 = n1 − 2。 | 
| 算術運算操作指令 | 2/ | ( n1 - n2 ) 有號數除以 2。 | 
| 算術運算操作指令 | ABS | ( n1 - u1 ) 絕對值。 | 
| 算術運算操作指令 | NEGATE | ( n1 - n2 ), n2 = 0 − n1。 | 
| 算術運算操作指令 | MAX | ( n1 , n2 - maximum ) 較大者。 | 
| 算術運算操作指令 | MIN | ( n1 , n2 - minimum ) 較小者。 | 
| 算術運算操作指令 | UM* | ( u1 , u2 - ud-product ) 無號數相乘。 | 
| 算術運算操作指令 | UM/MOD | ( u1 , u2 - u-rem , u-quo ) 與 /MOD 相似,但為無號數。 | 
| 算術運算操作指令 | D+ | ( dn1 , dn2 - dn-sum ) 雙整數加法。 | 
| 算術運算操作指令 | DNEGATE | ( dn1 - dn2 ) 雙整數負值。 | 
| 算術運算操作指令 | */ | ( n1 , n2 , n3 - quot ) 先乘再除,過度中間為雙整數。 | 
| 邏輯運算操作指令 | AND | ( n1 , n2 - n1 AND n2 ) 位元“且”。 | 
| 邏輯運算操作指令 | OR | ( n1 , n2 - n1 OR n2 ) 位元“或”。 | 
| 邏輯運算操作指令 | XOR | ( n1 , n2 - n1 XOR n2 ) 位元“異或”。 | 
| 邏輯運算操作指令 | NOT | ( n1 - not-n1 ) 位元“非”。 | 
| 比較運算操作指令 | < | ( n1 , n2 - f ) 若 n1 < n2 為真。 | 
| 比較運算操作指令 | > | ( n1 , n2 - f ) 若 n1 > n2 為真。 | 
| 比較運算操作指令 | = | ( n1 , n2 - f ) 若 n1 = n2 為真。 | 
| 比較運算操作指令 | 0< | ( n - f ) 若 n 為負數為真。 | 
| 比較運算操作指令 | 0> | ( n - f ) 若 n 為正數為真。 | 
| 比較運算操作指令 | 0= | ( n - f ) 若 n = 0 為真。 | 
| 比較運算操作指令 | u< | ( u1 , u2 - f ) 無號數比較 u1 < u2 為真。 | 
| 比較運算操作指令 | d< | ( d1 , d2 - f ) 雙字比較 d1 < d2 為真。 | 
| 流程控制操作指令 | QUIT | ( - ) 清除回返堆疊,設定系統為解譯狀態。 | 
| 流程控制操作指令 | ABORT | ( - ) 放棄執行,清除數據堆疊並執行 QUIT。 | 
| 流程控制操作指令 | BEGIN … UNTIL | 重複執行 … 直到條件為真。 | 
| 流程控制操作指令 | BEGIN … WHILE … REPEAT | 重複 … 若條件為假則執行分支 … 重複。 | 
| 流程控制操作指令 | IF … THEN | 若條件為真則執行 THEN 前之部分。 | 
| 流程控制操作指令 | IF … ELSE … THEN | 真則執行 IF 部分,否則 ELSE 部分。 | 
| 流程控制操作指令 | DO … LOOP | 從起始值到上限重複。 | 
| 流程控制操作指令 | DO … +LOOP | 起始到上限,且每次增加指定步長。 | 
| 流程控制操作指令 | LEAVE | 離開 DO…LOOP 迴圈。 | 
| 流程控制操作指令 | EXIT | 離開定義指令 (不在 DO…LOOP/+LOOP 中)。 | 
| 流程控制操作指令 | I | 回傳最內層 DO…LOOP 的指標值。 | 
| 流程控制操作指令 | J | 回傳次內層 DO…LOOP 的指標值。 | 
| 輸入與輸出操作指令 | KEY | ( - c ) 從輸入裝置讀取一個 ASCII 值。 | 
| 輸入與輸出操作指令 | EXPECT | ( addr , +n - ) 讀取 n 個字或直到回車鍵,放入 addr 開始的緩衝區。 | 
| 輸入與輸出操作指令 | SPAN | ( - addr ) 取得最近執行之 EXPECT 的實際字數緩衝位置。 | 
| 輸入與輸出操作指令 | EMIT | ( c - ) 顯示一個 ASCII 字元。 | 
| 輸入與輸出操作指令 | TYPE | ( string - ) 顯示字串。 | 
| 輸入與輸出操作指令 | CR | ( - ) 換列。 | 
| 輸入與輸出操作指令 | SPACE | ( - ) 顯示空白。 | 
| 輸入與輸出操作指令 | SPACES | ( n - ) 顯示 n 個空白。 | 
| 輸入與輸出操作指令 | . | ( n - ) 顯示 n,有負數時前置負號。 | 
| 輸入與輸出操作指令 | U. | ( u - ) 顯示無號數 u。 | 
| 轉換操作指令 | BASE | ( - addr ) 基底數存放位址。 | 
| 轉換操作指令 | DECIMAL | ( - ) 設定為十進制基底。 | 
| 轉換操作指令 | PAD | ( - addr ) 臨時緩衝區位址 (至少84字元)。 | 
| 轉換操作指令 | WORD | ( c - addr ) 從輸入中讀入封包字串,界定字元為 c,或者到字串末尾。 | 
| 轉換操作指令 | COUNT | ( addr - string ) 非包封字串,長度在 addr,字元從 addr+1 開始。 | 
| 轉換操作指令 | -TRAILING | ( string1 - string2 ) 去掉字串尾部之空白。 | 
| 轉換操作指令 | CONVERT | ( +d1 , addr1 - +d2 , addr2 ) 將字串轉為數字,加到 d1 上,直到遇到非數字字母為止。 | 
| 數字輸出轉換操作指令 | <# | ( d1 - d1 ) 設定轉換開始。 | 
| 數字輸出轉換操作指令 | # | ( d1 - d2 ) 削剖 d1 的一位数字。 | 
| 數字輸出轉換操作指令 | #S | ( d1 – 0 , 0 ) 將剩餘所有數位削出。 | 
| 數字輸出轉換操作指令 | HOLD | ( d1 , c - d1 ) 將字元 c 加到字串中。 | 
| 數字輸出轉換操作指令 | SIGN | ( d1 - d1 , n ) 若 n<0 則加負號到字串前。 | 
| 數字輸出轉換操作指令 | #> | ( d1 - string ) 結束轉換並留下字串。 | 
| 詞典操作指令 | ' name | ( - cfa ) 遞給 name 指令的 cfa。 | 
| 詞典操作指令 | FIND | ( addr - cfa , f ) 搜尋字典,若找到。 | 
| 詞典操作指令 | EXECUTE | ( cfa - ) 執行該 cfa 指令。 | 
| 詞典操作指令 | >BODY | ( cfa - pfa ) 取得 pfa。 | 
| 詞典操作指令 | HERE | ( - addr ) 下一個可用字典位址。 | 
| 詞典操作指令 | ALLOT | ( n - ) 保留字典空間。 | 
| 詞典操作指令 | , | ( n - ) 將 n 編譯入字典。 | 
| 詞典操作指令 | FORTH | ( - ) 設為第一搜尋字彙名詞。 | 
| 詞典操作指令 | DEFINITIONS | ( - ) 設定搜尋順序中第一個字彙。 | 
| 詞典操作指令 | FORGET name | ( - ) 刪除 name 與之後的指令定義。 | 
| 編譯操作指令 | STATE | ( - addr ) 表示是否為編譯狀態。 | 
| 編譯操作指令 | [ | ( - ) 設系統為解譯狀態。 | 
| 編譯操作指令 | ] | ( - ) 回復編譯狀態。 | 
| 編譯操作指令 | IMMEDIATE | ( - ) 最近定義指令為立即指令。 | 
| 編譯操作指令 | : name ; | 定義新的字彙。 | 
| 編譯操作指令 | CREATE name | 建立資料結構名稱。 | 
| 編譯操作指令 | DOES> x1 | 將指令的後續行為修改為 x1(立即型態)。 | 
| 編譯操作指令 | CONSTANT name | 建立一個常數。 | 
| 編譯操作指令 | VARIABLE name | 建立一個變數。 | 
| 編譯操作指令 | VOCABULARY name | 建立一個詞彙表。 | 
| 限編譯狀態且立即執行指令 | .\" ccc \" | 編譯字串 ccc,執行時輸出。 | 
| 限編譯狀態且立即執行指令 | ABORT\" ccc \" | 若旗號為真則輸出字串並放棄執行。 | 
| 限編譯狀態且立即執行指令 | LITERAL | 將數值編譯入堆疊。 | 
| 限編譯狀態且立即執行指令 | ['] name | 將 name 的 cfa 視為數值編譯。 | 
| 限編譯狀態且立即執行指令 | [COMPILE] name | 編譯時插入 name 的 cfa。 | 
| 限編譯狀態且立即執行指令 | COMPILE name | 在定義中編譯 name 指令。 | 
| 周邊裝置操作指令 | BLOCK | ( u - addr ) 讀取區塊到緩衝區。 | 
| 周邊裝置操作指令 | BUFFER | ( u - addr ) 設定緩衝區。 | 
| 周邊裝置操作指令 | UPDATE | ( - ) 標定最近使用區塊以便寫回。 | 
| 周邊裝置操作指令 | SAVE-BUFFERS | ( - ) 寫回所有緩衝區。 | 
| 周邊裝置操作指令 | FLUSH | ( - ) 關閉所有開啟檔案。 | 
| 周邊裝置操作指令 | TIB | ( - addr ) 輸入字串的位址。 | 
| 周邊裝置操作指令 | #TIB | ( - addr ) 最近輸入字元數目位址。 | 
| 周邊裝置操作指令 | BLK | ( - addr ) 輸入區塊位址。 | 
| 周邊裝置操作指令 | >IN | ( - addr ) 輸入偏移位址。 | 
| 周邊裝置操作指令 | LOAD | ( u - ) 載入區塊 u 並重設輸入來源。 |